package com.work.cos.service.interfc.pay;

import java.util.List;

import com.work.cos.domain.entity.pay.ComRefundEntity;
import com.work.cos.domain.entity.pay.ComTradeEntity;
import com.work.cos.domain.vo.pay.FConditionVo;
import com.work.cos.util.page.Page;



/**
 *类功能说明：
 */
public interface IComTradeService
{
	
	/**
	 * 列出所有交易
	 * @return
	 */
	List<ComTradeEntity> listAll();
	
	/**
	 * 保存交易记录
	 * @param trade
	 * @return
	 */
	ComTradeEntity saveTrade(ComTradeEntity trade);
	
	/**
	 * 根据id 获取交易记录
	 * @param id
	 * @return
	 */
	ComTradeEntity findTradeByID(Long id);
	
	/**
	 * 根据outTradeNo 获取交易记录
	 * @param outTradeNo
	 * @return
	 */
	ComTradeEntity findByOutTradeNo(String outTradeNo);
	
	/**
	 * 根据支付宝流水号tradeNo 获交易记录
	 * @param tradeNo
	 * @return
	 */
	ComTradeEntity findByTradeNo(String tradeNo);
	
	/**
	 * 保存退款记录
	 * @param refund
	 * @return
	 */
	ComRefundEntity saveRefund(ComRefundEntity refund);
	
	/**
	 * 根据id 获取退款记录
	 * @param id
	 * @return
	 */
	ComRefundEntity findRefundByID(Long id);
	
	/**
	 * 根据BatchNo 获取退款记录
	 * @param BatchNo
	 * @return
	 */
	ComRefundEntity findRefundByBatchNo(String batchNo);
	
	
	
	/**
	 * 列出可退款可操作相关交易
	 * @param refunded
	 * @param pageable
	 * @return
	 */
	Page<ComTradeEntity> listRefundTrades(List<String> refunded);
	
	/**
	 * 条件搜索相关交易
	 * @param vo
	 * @param pageable
	 * @return
	 */
	Page<Object> listTradesByCondition(FConditionVo vo);
	
	/**
	 * 根据id集合获取交易记录集合
	 * @param tradeIds
	 * @return
	 */
	List<ComTradeEntity> listByTradeIds(List<Long> tradeIds);
}
